import moment from 'moment'; import Button from '@material-ui/core/Button'; import Box from '@material-ui/core/Box'; import Link from '@material-ui/core/Link'; import Paper from '@material-ui/core/Paper'; import Divider from '@material-ui/core/Divider'; import Container from '@material-ui/core/Container'; import TextField from '@material-ui/core/TextField'; import Typography from '@material-ui/core/Typography'; import {makeStyles} from '@material-ui/core/styles'; import {DatePicker} from '@material-ui/pickers'; import {PropsWithChildren, useState} from 'react'; import {useTranslation} from 'react-i18next'; import ShareEvent from '../../../containers/ShareEvent'; import useEventStore from '../../../stores/useEventStore'; import useToastStore from '../../../stores/useToastStore'; import useSettings from '../../../hooks/useSettings'; import EventLayout, {TabComponent} from '../../../layouts/Event'; import {initializeApollo} from '../../../lib/apolloClient'; import { EventByUuidDocument, useUpdateEventMutation, } from '../../../generated/graphql'; interface Props { eventUUID: string; } const Page = (props: PropsWithChildren) => { return ; }; const DetailsTab: TabComponent = ({}) => { const {t} = useTranslation(); const settings = useSettings(); const [updateEvent] = useUpdateEventMutation(); const addToast = useToastStore(s => s.addToast); const setEventUpdate = useEventStore(s => s.setEventUpdate); const event = useEventStore(s => s.event); const [isEditing, setIsEditing] = useState(false); const idPrefix = isEditing ? 'EditEvent' : 'Event'; const classes = useStyles(); const onSave = async e => { try { const {uuid, ...data} = event; const {id, travels, waitingPassengers, __typename, ...input} = data; await updateEvent({ variables: {uuid, eventUpdate: input}, refetchQueries: ['eventByUUID'], }); setIsEditing(false); } catch (error) { console.error(error); addToast(t('event.errors.cant_update')); } }; const modifyButton = isEditing ? ( ) : ( ); if (!event) return null; return ( {modifyButton}
{t('event.fields.name')} {isEditing ? ( setEventUpdate({name: e.target.value})} name="name" id="EditEventName" /> ) : ( {event.name ?? t('event.fields.empty')} )}
{t('event.fields.date')} {isEditing ? ( setEventUpdate({ date: !date ? null : moment(date).format('YYYY-MM-DD'), }) } format="DD/MM/YYYY" cancelLabel={t('generic.cancel')} clearable clearLabel={t('generic.clear')} id={`${idPrefix}Date`} /> ) : ( {event.date ? moment(event.date).format('DD/MM/YYYY') : t('event.fields.empty')} )}
{t('event.fields.address')} {isEditing ? ( setEventUpdate({address: e.target.value})} id={`${idPrefix}Address`} name="address" /> ) : ( {event.address ? ( e.preventDefault} > {event.address} ) : ( t('event.fields.empty') )} )}
{t('event.fields.description')} {isEditing ? ( setEventUpdate({description: e.target.value})} id={`${idPrefix}Description`} name="description" /> ) : ( {event.description ?? t('event.fields.empty')} )}
{t('event.fields.link')} {t('event.fields.link_desc')} {' '} {t('event.details.aboutCaroster')}
); }; const useStyles = makeStyles(theme => ({ root: { position: 'relative', paddingLeft: '80px', [theme.breakpoints.down('sm')]: { paddingLeft: 0, paddingBottom: '80px', }, }, paper: { position: 'relative', padding: theme.spacing(2), }, card: { marginTop: theme.spacing(6), }, modify: { position: 'absolute', right: theme.spacing(2), }, section: { marginBottom: theme.spacing(2), width: '540px', maxWidth: '100%', paddingX: theme.spacing(2), }, map: { marginTop: theme.spacing(4), }, seeOnGMapButton: { marginLeft: theme.spacing(2), }, })); export async function getServerSideProps(ctx) { const {uuid} = ctx.query; const apolloClient = initializeApollo(); const {data = {}} = await apolloClient.query({ query: EventByUuidDocument, variables: {uuid}, }); const {eventByUUID: event} = data; const {host = ''} = ctx.req.headers; return { props: { event, eventUUID: uuid, metas: { title: event?.name || '', url: `https://${host}${ctx.resolvedUrl}`, }, }, }; } export default Page;